
package modele;

/**
 * Class Personne représentant tout individu possédant un compte sur
 * l’application web (login, password)
 */
public class Personne {

    private int id; 
    private String nom;
    private String prenom;
    private String adresse;
    private String email;
    private String numTel;
    private String login;
    private String password;

    /**
     * Constructeur de la classe nécessitant toutes les informations
     * @param login : le login de la personne
     * @param password : le mot de passe de la personne
     */
    public Personne(int id,String nom,String prenom,String adresse,String email,String numTel, String login, String password){

        assert id>0 : "L'identifiant doit être supérieur à 0";
        assert login != null && !login.matches("^//s*$") : "Login ne doit être ni null ni vide";
        assert password != null && !password.matches("^//s*$") :  "Password ne doit être ni null ni vide";
        assert nom != null && !nom.matches("^//s*$") :  "Password ne doit être ni null ni vide";
        assert prenom != null && !prenom.matches("^//s*$") :  "Password ne doit être ni null ni vide";

        this.adresse=adresse;
        this.email=email;
        this.id=id;
        this.nom=nom;
        this.prenom=prenom;
        this.numTel=numTel;
        this.login = login;
        this.password = password;
    }

    /**
     * Retourne l'adresse de la personne
     * @return Adresse
     */
    public String getAdresse() {
        return adresse;
    }

    /**
     * Affecte une nouvelle adresse à une personne
     * @param adresse
     */
    public void setAdresse(String adresse) {
        this.adresse = adresse;
    }

    /**
     * Retourne l'email de la personne
     * @return Email
     */
    public String getEmail() {
        return email;
    }

    /**
     * Affecte un nouveau email à une personne
     * @param email
     */
    public void setEmail(String email){
        this.email = email;
    }

    /**
     * Retourne l'identidiant de la personne
     * @return id
     */
     public int getId(){
        return id;
    }

    /**
     * Affecte un nouvel identifiant à une personne
     * @param id
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * Retourne le nom de la personne
     * @return Nom
     */
    public String getNom() {
        return nom;
    }

    /**
     * Affecte un nouveau nom à une personne
     * @param nom
     */
    public void setNom(String nom) {
        assert nom != null && !nom.matches("^//s*$") : "nom ne doit être ni null ni vide";
        this.nom = nom;
    }

    /**
     * Retourne le numéro de téléphone de la personne
     * @return NumTel
     */
    public String getNumTel() {
        return numTel;
    }
    /**
     * Affecte un nouveau numéro de téléphone à une personne
     * @param numTel
     */
    public void setNumTel(String numTel) {
        this.numTel = numTel;
    }

    /**
     * Retourne le prenom de la personne
     * @return prenom
     */
    public String getPrenom() {
        return prenom;
    }

    /**
     * Affecte un nouveau prenom à une personne
     * @param prenom
     */
    public void setPrenom(String prenom) {
        assert prenom != null && !prenom.matches("^//s*$") : "prenom ne doit être ni null ni vide";
        this.prenom = prenom;
    }

    /**
     * Retourne le login de la personne
     * @return le login
     */
    public String getLogin(){
        return this.login;
    }

    /**
     * Affecte un login à la personne
     * @param login
     */
    public void setLogin(String login) {
        assert login != null && !login.matches("^//s*$") : "Login ne doit être ni null ni vide";
        this.login = login;
    }

    /**
     * Retourne le password de la personne
     * @return le password
     */
    public String getPassword() {
        return this.password;
    }

    /**
     * Affecte un password à la personne
     * @param password
     */
    public void setPassword(String password) {
        assert password != null && !password.matches("^//s*$") : "Password ne doit être ni null ni vide";
        this.password = password;
    }

    /**
     * Renvoie une chaîne permettant un affichage basique de la Personne
     * @return prenom + nom
     */
    @Override
    public String toString(){
        return getPrenom() + " " + getNom();
    }



}
